
package com.zhonghong.entrance;

import com.zhonghong.excel.ExcelUtil;
import com.zhonghong.xml.XmlUtil;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

/**
 * @description:实现excel文件转换为xml文件的客户端代理
 * @author zhonghong.zhangxg
 * @date 2016年7月11日下午2:32:59
 */
public class Xls2Xml {
    private XmlUtil xmlUtil = new XmlUtil();
    private ExcelUtil excelUtil = null;

    /**
     * 完成excel文件到strings.xml文件的转换
     * 
     * @param xlsFile : excel文件对象
     * @param xmlFile : string.xml文件对象
     * @param dest : 生成的strings.xml存放目录
     * @throws IOException
     */
    public void translate(File xlsFile, File xmlFile, File dest) throws IOException {
        excelUtil = new ExcelUtil(xlsFile);

        // 得到excel的三列值
        HashMap<Integer, ArrayList<String>> values = excelUtil.readSheet();

        // 得到Xml文件中的所有key值
        ArrayList<String> keys = xmlUtil.readSrcXml(xmlFile);

        System.out.println(values.size());// 输出的是读取Excel的列数
        System.out.println(keys.size());  // 输出的是读取xml文件的key值行数

        // 得到values集合的迭代器
        Iterator<?> it = values.entrySet().iterator();
        while (it.hasNext()) {
            Entry<?, ?> entry = (Entry<?, ?>) it.next();
            // 列的索引值
            int index = (int) entry.getKey();
            // 得到当前列值得集合
            ArrayList<String> valueStrs = (ArrayList<String>) entry.getValue();

            // 初始化一个新的xml模板
            xmlUtil.initXml();
            // 获取键值集合和value结合中的最小值
            int minSize = Math.min(keys.size(), valueStrs.size());
            for (int i = 0; i < minSize; i++) {
                String attr = keys.get(i);
                String value = valueStrs.get(i);
                xmlUtil.addNode(attr, value);
            }
            xmlUtil.write2File(dest, "strings" + (index + 1) + ".xml");
            excelUtil.closeWorkBook();
        }

    }

    /**
     * 测试方法
     * 
     * @param args
     */
    // public static void main(String[] args) {
    // Xls2Xml demo = new Xls2Xml();
    // demo.translate(new File("appAudio.xls"), new File("strings.xml"), new File("D://"));
    // }
}
